/**
 * 文件名：@UseDataSourceMethodAdvisor.java <br/>
 * 包名：cn.efunbox.afw.data.datasource.dynamic <br/>
 * 项目名：afw-data <br/>
 * @author xtwin <br/>
 */
package cn.efunbox.afw.data.datasource.dynamic;

import java.lang.reflect.Method;

import org.springframework.aop.Pointcut;
import org.springframework.aop.support.annotation.AnnotationMatchingPointcut;
import org.springframework.core.annotation.AnnotationUtils;

/**
 * 类名：UseDataSourceMethodAdvisor  <br />
 *
 * 功能：拦截所有定义了cn.efunbox.afw.core.persist.dynamic.UseDataSource注解的方法
 *
 * @author xtwin <br />
 * 创建时间：2016年7月31日 下午3:49:19  <br />
 * @version 2016年7月31日
 */
public class UseDataSourceMethodAdvisor extends AbstractUseDataSourceAdvisor {

	/** add by xtwin 2016年7月31日 下午3:49:34 */
	private static final long serialVersionUID = -1041194734421396831L;

	/**
	 * 功能: <br/>
	 * 
	 * 重写：xtwin <br/>
	 * 
	 * @version ：2016年7月31日 下午3:50:00<br/>
	 * 
	 * @return <br/>
	 * @see org.springframework.aop.PointcutAdvisor#getPointcut()
	 */
	@Override
	public Pointcut getPointcut() {
		return new AnnotationMatchingPointcut(null, UseDataSource.class);
	}

	/**
	 * 功能: <br/>
	 * 
	 * 重写：xtwin <br/>
	 * 
	 * @version ：2016年7月31日 下午3:51:10<br/>
	 * 
	 * @param method
	 * @param clazz
	 * @return <br/>
	 * @see cn.efunbox.afw.data.datasource.dynamic.AbstractUseDataSourceAdvisor#findAnnotation(java.lang.reflect.Method, java.lang.Class)
	 */
	@Override
	protected UseDataSource findAnnotation(Method method, Class<?> clazz) {
		// 获取方法上的注解定义
		return AnnotationUtils.findAnnotation(method, UseDataSource.class);
	}
}
